package com.itheima.health.dao;

import com.github.pagehelper.Page;
import com.itheima.health.pojo.CheckGroup;
import org.apache.ibatis.annotations.Param;

import java.util.List;

// 严格意义上讲：更新和删除需要返回值，mysql会返回一个影响行数，将void换成int即可
public interface CheckGroupDao {
    /**
    * @Description: 添加检查组
    * @Param: [checkGroup]
    * @return: void
    * @Author: HuChunping
    * @Date: 2021/1/8-23:13
    */
    void add(CheckGroup checkGroup);

    /**
    * @Description: 添加检查组检查项表
    * @Param: [checkGroupId:检查组id, checkitemId：检查项id]
    * @return: void
    * @Author: HuChunping
    * @Date: 2021/1/8-23:12
     *
    */
    // 两个参数都是一样的类型，需要去别名，一样的类型算一个，sql.xml需要parameterType指出
    void addCheckGroupCheckItem(@Param("checkGroupId") Integer checkGroupId, @Param("checkitemId") Integer checkitemId);

    /**
    * @Description: 实现分页查询
    * @Param: [queryString:查询sql语句]
    * @return: com.github.pagehelper.Page<com.itheima.health.pojo.CheckGroup>
    * @Author: HuChunping
    * @Date: 2021/1/8-23:13
    */
    // 实现分页(展示和分页)查询
    Page<CheckGroup> findByCondition(String queryString);

    /**
    * @Description: 通过id查询检查组
    * @Param: [id]
    * @return: com.itheima.health.pojo.CheckGroup
    * @Author: HuChunping
    * @Date: 2021/1/9-17:14
    */
    CheckGroup findById(int id);

    /**
    * @Description: 通过检查组id查询中间表获取勾选的检查项
    * @Param: [id]
    * @return: java.util.List<java.lang.Integer>
    * @Author: HuChunping
    * @Date: 2021/1/9-17:20
    */
    List<Integer> findCheckItemIdsByCheckGroupId(int id);

    /**
    * @Description: 向检查组检查项中间表添加
    * @Param: [checkGroup]
    * @return: void
    * @Author: HuChunping
    * @Date: 2021/1/9-18:03
    */
    void update(CheckGroup checkGroup);

    /**
    * @Description: 删除检查组检查项
    * @Param: [id]
    * @return: void
    * @Author: HuChunping
    * @Date: 2021/1/9-18:08
    */
    void deleteCheckGroupCheckItem(Integer id);

    /**
    * @Description: 根据id删除检查组
    * @Param: [id]
    * @return: void
    * @Author: HuChunping
    * @Date: 2021/1/9-19:43
    */
    void deleteById(int id);

    /**
    * @Description: 查询检查组是否被套餐使用
    * @Param: [id]
    * @return: int
    * @Author: HuChunping
    * @Date: 2021/1/9-19:51
    */
    int findCountByCheckGroupId(int id);

    /**
    * @Description: 查询所有检查组
    * @Param: []
    * @return: java.util.List<com.itheima.health.pojo.CheckGroup>
    * @Author: HuChunping
    * @Date: 2021/1/10-17:11
    */
    List<CheckGroup> findAll();

}
